This invention relates to image rendering with computers and software and more particularly to devices and software components for translating vector graphic documents into bitmapped documents.
Scalable Vector Graphics (SVG) is a computer-readable language that is based on eXtensible Markup Language (XML) and is used for representing static and dynamic vector graphic images. SVG is able to define two-dimensional images using tags conforming to XML that determine the images' attributes (e.g., size, shape, color, etc.). SVG is able to display not only the shapes of two-dimensional vector graphic images but also bitmapped graphics and text. SVG is vector-based, which means content is not written for specific screen resolutions and sizes but can easily be scaled. SVG is standardized by the World Wide Web Consortium (W3C), which has adopted SVG version 1.1 as a W3C Recommendation.
HyperText Markup Language (HTML) is another computer-readable language that is written using tags and at least in that respect is similar to XML. XHTML is a version of HTML that is conformant to XML. From the beginning, HTML was intended to represent the logical structure of text, not graphics, in content such as documents and web pages. Images are represented in HTML as bitmaps. The physical representation of headings, paragraphs, etc. is determined by the browser that renders the HTML code. As time passed, more control over the visual appearance of web pages became desirable with HTML. Tags, such as the font tag, were introduced that enabled web and other content developers to specify the typeface, size, weight, and color of text in HTML pages. Using table elements with zero-width borders, it became possible to do advanced layout and positioning of page contents, but the HTML code became cluttered and hard to comprehend. Today, HTML is again written to represent the structure of documents, leaving presentation-related formatting to Cascading Style Sheets (CSS), which is a mechanism for adding styles (e.g., fonts, colors, spacing, etc.) to web pages and documents.
In recent years, web applications have emerged, which are web pages that try to mimic the behavior of regular software applications. For example, modern browsers support JavaScript, which is another computer-readable language, and HTML documents are accessible through the Document Object Model, which is a W3C-standard, object-oriented Application Program Interface (API) for accessing content elements, such as images on a web page, as objects. JavaScript is one of many types of scripting logic that can be inserted or embedded in a web application (or web content or web page) and executed by a processor in displaying a web page.
The Third Generation Partnership Project (3GPP), which promulgates specifications for many electronic communication systems, adopted SVG 1.1 for the 3GPP Release 5 specifications, and SVG is today used by roughly 100 million mobile telephone handsets and other user equipments (UEs) for generating and displaying images. For example, UEs now routinely access the World Wide Web with browser applications that adjust images and other downloaded content for the commonly smaller screens included in those equipments.
Specification of SVG Tiny 1.2 is under development by W3C for SVG version 1.2. SVG Tiny is specifically designed for mobile devices, which typically have limited memory and processing resources. SVG Tiny 1.2 has also been adopted by 3GPP for the Release 6 specifications. Support for a variety of new multimedia features, including full control of audio and video, is included along with micro DOM (μDOM) and scripting. μDOM is a subset of the Document Object Model (DOM). Some SVG attributes can be manipulated by μDOM scripts, enabling many kinds of animation. Objects can be added or removed to create dynamic content on the page.
Among other things, SVG and other vector-based representations facilitate animation because information about background objects currently hidden from view by foreground objects is not lost. Consequently, when a foreground object is made to appear in a different location in a different image, it is possible to include the formerly hidden background object(s) in that different-location image. In particular, SVG uses a “painters model” of rendering, in which “paint” is applied in successive operations. In other words, an electronic processor renders an object on an output device or display by carrying out a succession of “paint” operations. With each operation, the processor paints over a corresponding area of the output display, and when an area being painted overlaps a previously painted area, the new paint partially or completely obscures the old paint.
Because images defined in HTML are bitmaps, information about the appearance of a background object hidden by a foreground object does not exist. This lack of information makes it difficult for a processor to render formerly-background objects when foreground objects are made to appear in different locations.
It is straightforward to convert an SVG or equivalent vector-based image to a bitmap image, but doing so has a number of drawbacks. For example, it is very difficult (even impossible) to change an image, e.g., to show motion, once it has been converted from SVG, for example, to a bitmap image. As noted above, information about the appearance of background objects hidden by foreground objects that was present in the SVG or other vector-based representation does not exist in the HTML or other non-vector-based representation. Moreover, advanced applications in SVG are not executable by many UEs because SVG Tiny 1.2 is not yet fully deployed and SVG is not be supported on every type of UE.
It is desirable to be able to be able to convert SVG and equivalent vector-based images into bitmaps and equivalent non-vector-based images because this would enable the display of SVG-originated and other vector-graphic content on more types of UEs and other display devices.